// global variable

#include <stdio.h>

// int gAll = 12;
// 没有初始化的全局变量会得到 0 值
// 指针会得到 NULL 值
int gAll;
// 全局变量初始化必须使用编译时刻已经知道的值
// 以下方式会报错
// int g2 = gAll;

int f(void);

int main(int argc, char const *argv[])
{
    // __func__ 表示当前函数的名字
    printf("in %s gAll = %d\n", __func__, gAll);
    f();
    printf("agn in %s gAll = %d\n", __func__, gAll);
    
    return 0;
}

int f(void)
{
    // 在函数内部定义与全局变量同名的变量，则全局变量会被隐藏
    {
        int gAll = 0xFFFF;
        printf("here gAll = %d\n", gAll);
    }
    printf("in %s gAll = %d\n", __func__, gAll);
    gAll += 2;
    printf("agn in %s gAll = %d\n", __func__, gAll);

    return gAll;
}